﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Configuration;
using NGI_Enumerador;
using NGI_Entidades;
using NGI_Logica;
using NGI_Auxiliares;


namespace NGI_Sistema.Forms
{
    public partial class CuentaCorriente : Form
    {

        #region Propiedades
        private TiposDatos _tipoDato = TiposDatos.Cliente;
        private String NombreImagenExitoso = "mini_tick.png";
        private String NombreImagenNoExitoso = "mini_x.png";
        private String NombreImagenEditar = "mini_edit.png";
        private String Path = ConfigurationManager.AppSettings["DirectorioRuta"].ToString() + ConfigurationManager.AppSettings["DirectorioRecursos"].ToString() + ConfigurationManager.AppSettings["DirectorioImagenes"].ToString() + ConfigurationManager.AppSettings["DirectorioSistema"].ToString();
        private Padre miPadre;
        #endregion Propiedades


        #region Constructores
        public CuentaCorriente(TiposDatos tipoDato, Padre miPadre)
        {
            InitializeComponent();
            this._tipoDato = tipoDato;
            this.miPadre = miPadre;
        }
        #endregion Constructores


        #region Funciones Privadas
        private void CargarCuentaCorrienteEnGrilla()
        {
            EntidadCuentaCorriente[] ListadoEntidades;

            if (this._tipoDato == TiposDatos.Proveedor)
            {
                ListadoEntidades = Proveedores.TraerCuentaCorriente(this.chkMostrarTodos.Checked, this.chkSoloDeuda.Checked);
            }
            else
            {
                ListadoEntidades = Clientes.TraerCuentaCorriente(this.chkMostrarTodos.Checked, this.chkSoloDeuda.Checked);
            }


            this.dgvCuentaCorriente.Rows.Clear();
            if (ListadoEntidades != null && ListadoEntidades.Length > 0)
            {
                foreach (EntidadCuentaCorriente Entidad in ListadoEntidades)
                {
                    this.dgvCuentaCorriente.Rows.Add(Entidad.ID.ToString(), Entidad.RazonSocial.ToString(), Entidad.CUIT.ToString(), Entidad.Adeudado.ToString(), new Bitmap(Path + (Entidad.Activo ? this.NombreImagenExitoso : this.NombreImagenNoExitoso), true), new Bitmap(Path + this.NombreImagenEditar, true));
                    if (Entidad.Adeudado > 0)
                        this.dgvCuentaCorriente.Rows[this.dgvCuentaCorriente.Rows.Count - 1].DefaultCellStyle.ForeColor = Color.Red;
                }
            }
        }
        #endregion Funciones Privadas


        #region Eventos
        private void CuentaCorriente_Load(object sender, EventArgs e)
        {
            if (this._tipoDato == TiposDatos.Proveedor)
            {
                this.cmbTipo.SelectedIndex = 0;
            }
            else
            {
                this.cmbTipo.SelectedIndex = 1;
            }

            this.CargarCuentaCorrienteEnGrilla();
        }

        private void cmbTipo_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (this.cmbTipo.SelectedIndex == 0)
            {
                this._tipoDato = TiposDatos.Proveedor;
            }
            else
            {
                this._tipoDato = TiposDatos.Cliente;
            }

            this.CargarCuentaCorrienteEnGrilla();
        }

        private void chkMostrarTodos_CheckedChanged(object sender, EventArgs e)
        {
            this.CargarCuentaCorrienteEnGrilla();
        }

        private void dgvCuentaCorriente_CellMouseMove(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (e.RowIndex >= 0 && e.ColumnIndex == 5)
                this.Cursor = Cursors.Hand;
            else
                this.Cursor = Cursors.Default;
        }

        private void dvgCuentaCorriente_CellMouseLeave(object sender, DataGridViewCellEventArgs e)
        {
            this.Cursor = Cursors.Default;
        }

        private void dgvCuentaCorriente_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex >= 0 && e.ColumnIndex == 5)
            {
                this.miPadre.AbrirAdministrador(this._tipoDato, Convert.ToInt32(this.dgvCuentaCorriente.Rows[e.RowIndex].Cells[0].Value));
            }
        }

        private void btnRefrescar_Click(object sender, EventArgs e)
        {
            this.CargarCuentaCorrienteEnGrilla();
        }

        private void chkSoloDeuda_CheckedChanged(object sender, EventArgs e)
        {
            this.CargarCuentaCorrienteEnGrilla();
        }
        #endregion Eventos
    }
}
